﻿/*
 * 
 * 作者：Max
 * 日期：2022/10/19
 * 作用：异常过滤器（自定义异常）
 * 
 * 异常：这个单词怎么写 try     --- Exception
 * 行为：Action
 * 授权： - Authorization
 * 结果：Result
 * 资源：Resource
 * 
 * 继承接口
 *      I 关键字 Filter
 * **/
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;

namespace Max.PH5_2004A.Shopping.API.MyFilter
{
    public class MyExceptionFilter : IExceptionFilter
    {
        public void OnException(ExceptionContext context)
        {
            //判断一下，这个异常是否被在类中处理
            if(context.ExceptionHandled == false)
            {
                //记录当前异常信息到日志文件中
                var log = NLog.LogManager.GetCurrentClassLogger();
                log.Error(context.Exception.Message);

                //没有处理，我们才在这里进行处理
                //返回自定义格式数据（友好的提示）
                context.Result = new JsonResult(new { code=500,msg="服务器内部错误，请联系管理员！" });
            }
            //告诉系统，这个异常处理完了。
            context.ExceptionHandled = true;
        }
    }
}
